#pragma once

#include "../Math/Vec2i.h"
#include <vector>
#include <memory>

class Chunk;
typedef std::shared_ptr<Chunk> ChunkPtr;

class Grid
{
public:
	Grid();
	~Grid();

	ChunkPtr &getChunk(Vec2i pos);
	ChunkPtr getChunkWithinBounds(Vec2i world_pos);
	void move(Vec2i dir);

private:
	std::vector<std::vector<ChunkPtr>> chunks;
};
typedef std::shared_ptr<Grid> GridPtr;
